热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

读书会|文中_PostgreSQLpostgresql读书会一期5优化数据库的参数们

篇首语:本文由编程笔记#小编为大家整理,主要介绍了PostgreSQLpostgresql读书会一期5优化数据库的参数们相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了PostgreSQL postgresql 读书会 一期 5 优化数据库的参数们相关的知识,希望对你有一定的参考价值。



PostgreSQL

313页起

PostgreSQL

关于硬盘的settings这一段写的比较少,并且写的也不是很清晰,这里进行扩展(扩展的字体为粗体)

在文中提到了fsync setting forces each transaction to be written to the hard disk after each commit. 

这个设置在POSTGRESQL中哪里存在书中并未有明确的指出,这里个人认为

synchronous_commit, fsync两个参数 牵扯synchronous_commit  和 Asynchronous commit 的问题.这也是书中提到的 turning this off will increase performance的地方. 


PostgreSQL

在postgresql.conf中synchronous_commit 有几个可以选择的选择项 off , local ,remote_write, remote_apply, on   和 fsync = off or on , 在官方文档中写道 关于 fsync 的内容

If this parameter is on, the PostgreSQL server will try to make sure that updates are physically written to disk, by issuing fsync() system calls or various equivalent methods (see wal_sync_method). This ensures that the database cluster can recover to a consistent state after an operating system or hardware crash.

不直译大致的意思, 这个参数确保你的物理写到磁盘,以备在系统崩溃后,数据库可以恢复一致性状态.

While turning off fsync is often a performance
benefit, this can result in unrecoverable data corruption in the event
of a power failure or system crash. Thus it is only advisable to turn
off fsync if you can easily recreate your entire database from external data.

关闭这个参数是可以提高性能的,但结果是如果出现类似power failure或系统崩溃的情况,你的数据可能会无法恢复.

如果有人提出强大的硬件可以弥补这个问题,官方的文字里有这样一句 High quality hardware alone is not a sufficient justification for turning off fsync.

在上面的文字中提到了synchronous_commit 种会有几种选择,但在没有物理复制的情况下,对于单机来说,也只有两种选择项, OFF ON , 默认是ON 如果你选择OFF 则可能会对于日志的写入会有延迟.所以还是按照默认值来设置,虽然设置OFF 也会有少许的性能提升. 那有人会问性能有多少提升,根据文档提到的最大会有3倍与 wal_writer_delay 的 下面默认的 wal_write_delay是200ms 那我也就只能认为每次写入的延迟的时间就是能提高多少性能的一个指标.

PostgreSQL

在上面提到了fsync参数=on的情况下, 的几种磁盘交互的方式,在文档中提到在系统编译的情况下,会自动选择一个合适的值来进行设置,默认是fsync,但实际上可能不是这个值.具体请看下面的recommendations

PostgreSQL

PostgreSQL


PostgreSQL

另外一个点是是书中提到的checkpoint_segment , 检查点的不正确的配置会影响PG的数据库的I/O性能.

PostgreSQL

首先要确认checkpoint 的作用是将缓冲区中的数据刷入到磁盘,此时wal 日志和数据是一致的, 为了性能,数据并不是commit后直接就写入到data文件,而是在缓冲中,到了一定的状态后,在刷入到磁盘中, 

这里有对此有影响的参数

min_wal_size 

max_wal_size 

checkpoint_timeout 

min_wal_size 和 max_wal_size 之间是运行dirty page 的大小但实际上可能会在负载较重的情况下,超过max_wal_size.

checkpoint_timeout 是默认的触发checkpoint的时间的设置, 实际上大部分系统在默认的状态下,都能满足系统的需求, 尤其在编译的安装的情况下,postgresql .conf中会自动配置这些参数.


实际上关于磁盘I/O性能在POSTGRESQL中可以配置的影响的参数很多,例如

full_page_writes = on 就是一个争论点, 但实际上大多数的系统是要打开这个点,让数据库在 crash 时可以恢复页面后,在通过wal log对数据库进行恢复操作. 具体原理这里就不展开,之前也写过相关的内容可以去查找.


最终文中提到有bluk insert的情况下可以关闭auto vacuum, 但并未提到有多少bluk insert的量是 100万还是1000万还是一个亿,所以这里也觉得这点有点......


ending  314

PostgreSQL



推荐阅读
  • 帝国CMS中的信息归档功能详解及其重要性
    本文详细解析了帝国CMS中的信息归档功能,并探讨了其在内容管理中的重要性。通过归档功能,用户可以有效地管理和组织大量内容,提高网站的运行效率和用户体验。此外,文章还介绍了如何利用该功能进行数据备份和恢复,确保网站数据的安全性和完整性。 ... [详细]
  • 服务器部署中的安全策略实践与优化
    服务器部署中的安全策略实践与优化 ... [详细]
  • 您的数据库配置是否安全?DBSAT工具助您一臂之力!
    本文探讨了Oracle提供的免费工具DBSAT,该工具能够有效协助用户检测和优化数据库配置的安全性。通过全面的分析和报告,DBSAT帮助用户识别潜在的安全漏洞,并提供针对性的改进建议,确保数据库系统的稳定性和安全性。 ... [详细]
  • 在本文中,我们将探讨如何在Docker环境中高效地管理和利用数据库。首先,需要安装Docker Desktop以确保本地环境准备就绪。接下来,可以从Docker Hub中选择合适的数据库镜像,并通过简单的命令将其拉取到本地。此外,我们还将介绍如何配置和优化这些数据库容器,以实现最佳性能和安全性。 ... [详细]
  • 在 Axublog 1.1.0 版本的 `c_login.php` 文件中发现了一个严重的 SQL 注入漏洞。该漏洞允许攻击者通过操纵登录请求中的参数,注入恶意 SQL 代码,从而可能获取敏感信息或对数据库进行未授权操作。建议用户尽快更新到最新版本并采取相应的安全措施以防止潜在的风险。 ... [详细]
  • 本文对SQL Server系统进行了基本概述,并深入解析了其核心功能。SQL Server不仅提供了强大的数据存储和管理能力,还支持复杂的查询操作和事务处理。通过MyEclipse、SQL Server和Tomcat的集成开发环境,可以高效地构建银行转账系统。在实现过程中,需要确保表单参数与后台代码中的属性值一致,同时在Servlet中处理用户登录验证,以确保系统的安全性和可靠性。 ... [详细]
  • 浏览器作为我们日常不可或缺的软件工具,其背后的运作机制却鲜为人知。本文将深入探讨浏览器内核及其版本的演变历程,帮助读者更好地理解这一关键技术组件,揭示其内部运作的奥秘。 ... [详细]
  • 深入解析Struts、Spring与Hibernate三大框架的面试要点与技巧 ... [详细]
  • 在使用 Cacti 进行监控时,发现已运行的转码机未产生流量,导致 Cacti 监控界面显示该转码机处于宕机状态。进一步检查 Cacti 日志,发现数据库中存在 SQL 查询失败的问题,错误代码为 145。此问题可能是由于数据库表损坏或索引失效所致,建议对相关表进行修复操作以恢复监控功能。 ... [详细]
  • Unity与MySQL连接过程中出现的新挑战及解决方案探析 ... [详细]
  • 本文详细介绍了在MySQL中如何高效利用EXPLAIN命令进行查询优化。通过实例解析和步骤说明,文章旨在帮助读者深入理解EXPLAIN命令的工作原理及其在性能调优中的应用,内容通俗易懂且结构清晰,适合各水平的数据库管理员和技术人员参考学习。 ... [详细]
  • 系统转换的三种方法及其具体应用分析
    系统转换是信息技术领域中常见的任务,本文详细探讨了三种主要的系统转换方法及其具体应用场景。这些方法包括:代码迁移、数据迁移和平台迁移。文章通过实例分析了每种方法的优势和局限性,并提供了实际操作中的注意事项和技术要点。例如,代码迁移适用于从VB6获取网页源码,数据迁移在Ubuntu中用于隐藏侧边栏,而平台迁移则涉及Tomcat 6.0的使用和谷歌爬虫的测试。此外,文章还讨论了蓝翰互动PHP面试和5118 SEO工具在系统转换中的应用,为读者提供了全面的技术参考。 ... [详细]
  • 使用 ListView 浏览安卓系统中的回收站文件 ... [详细]
  • 本文深入探讨了NoSQL数据库的四大主要类型:键值对存储、文档存储、列式存储和图数据库。NoSQL(Not Only SQL)是指一系列非关系型数据库系统,它们不依赖于固定模式的数据存储方式,能够灵活处理大规模、高并发的数据需求。键值对存储适用于简单的数据结构;文档存储支持复杂的数据对象;列式存储优化了大数据量的读写性能;而图数据库则擅长处理复杂的关系网络。每种类型的NoSQL数据库都有其独特的优势和应用场景,本文将详细分析它们的特点及应用实例。 ... [详细]
  • Swoole加密机制的安全性分析与破解可能性探讨
    本文深入分析了Swoole框架的加密机制,探讨了其在实际应用中的安全性,并评估了潜在的破解可能性。研究结果表明,尽管Swoole的加密算法在大多数情况下能够提供有效的安全保护,但在特定场景下仍存在被攻击的风险。文章还提出了一些改进措施,以增强系统的整体安全性。 ... [详细]
author-avatar
大果粒和小果粒
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有